package com.qijian.mold.service;

import com.qijian.mold.domain.entity.MoldChangeLog;
import com.qijian.mold.domain.vo.moldChangeLog.ChangeLogListVo;
import com.qijian.mold.enums.MoldChangeLogDetailsTypesEnum;
import com.qijian.mold.enums.MoldChangeLogTypesEnum;

import java.util.List;

/**
 * 换模进展日志信息
 *
 * @author anni.zhu
 * @author anni.zhu@king-v.com
 * Created in 2025/3/29 17:25
 */
public interface MoldChangeLogService  {

    /**
     * 添加换模日志
     * @param moldChangeId
     * @param operatorId
     * @param type
     * @param confirmUserIds
     */
    void saveChangeLog(Long moldChangeId, Long operatorId, MoldChangeLogTypesEnum type, MoldChangeLogDetailsTypesEnum detailsType, List<Long> confirmUserIds);

    /**
     * 添加任务日志
     * @param taskId
     * @param moldChangeId
     * @param operatorId
     * @param detailsType
     */
    void saveTaskLog(Long taskId, Long moldChangeId, Long operatorId, MoldChangeLogDetailsTypesEnum detailsType, Long confirmUserId);

    /**
     * 根据换模单id获取进展日志列表
     * @param moldChangeId
     * @return
     */
    List<ChangeLogListVo> getChangeLogList(Long moldChangeId);

    /**
     * 获取最新的换模进展日志
     * @param moldChangeId
     * @return
     */
    MoldChangeLog getLastChangeLog(Long moldChangeId);

    /**
     * 移除换模进展日志
     * @param moldChangeId
     */
    void removeLogByChangeId(Long moldChangeId);

    /**
     * 删除换模任务日志
     */
    void removeLogByTaskId(Long taskId);

    void update(MoldChangeLog moldChangeLog);
}
